import { get } from 'svelte/store';
import axios from 'axios';
import Cookies from 'js-cookie';
import { isLoadingStore } from '../store/common';
import { Alert } from './common';

let baseURL = ENV === 'development' ? 'https://code.zhangdong.site/api/' : '/api/';

const service = axios.create({
  baseURL,
  withCredentials: true,
  timeout: 15000,
});

service.interceptors.request.use(function (config) {
  if (!config.params) config.params = {};
  //开发环境增加cookie，避免跨域301错误
  if (config.params.cookie) {
    config.params.cookie = config.params.cookie;
  } else if (baseURL[0] !== '/') {
    config.params.cookie = `MUSIC_U=${Cookies.get('MUSIC_U')|'noCookie'};`;
  }
  if (!config.isHideLoading) {
    if (!get(isLoadingStore)) {
      isLoadingStore.set(true);
    }
  }
  return config;
});

service.interceptors.response.use(
  response => {
    isLoadingStore.set(false);
    // console.warn(response)
    const res = response;
    if (res.status === 200) {
      return res.data;
    } else if (res.status === 800) {
      return res.data;
    } else if (res.status === 801) {
      return res.data;
    } else if (res.status === 802) {
      return res;
    } else if (res.status === 803) {
      return res.data;
    } else if (res.status === 301) {
      console.warn(res.data)
      return res.data;
    } else {
      if (res.status) {
        Alert(
          response.config.url + '-' + res.status + '：' + (res.data.message ? res.data.message : res.data.msg ? res.data.msg : '未知错误')
        );
        return res.data;
      } else {
        Alert(response + '：' + response);
        return res;
      }
    }
  },
  error => {
    isLoadingStore.set(false);
    //签到不做报错处理
    if (error.response.config.url != '/daily_signin') {
      // debugger
      // Alert(
      //   error.response.data.code +
      //     '：' +
      //     (error.response.data.message
      //       ? error.response.data.message
      //       : error.response.data.msg
      //       ? error.response.data.msg
      //       : '未知错误')
      // );
      return  error.response.data;
     
      // Promise.then(error => {
      //   console.log(333, error);
      // });
      // return Promise.reject(error);
    }
  }
);

export default service;
